package main

import (
	"encoding/json"
	"fmt"
)
// json.Marshal(t)  序列化
// 结构体序列化时，如果结构体内字段首字母小写，那么json包无法访问，则无法序列化/反序列化
// 结构体序列化可指定tag，即在字段后添加如`json:"name"`标签

func JsonMap() {
	t := make(map[string]map[string]interface{})
	s := make(map[string]interface{})
	t["t_1"] = make(map[string]interface{})
	t["t_1"]["name"] = "laoli"
	t["t_1"]["age"] = 35
	t["t_1"]["stu"] = s
	s["name"] = "xiaoming"
	s["age"] = 12

	jsonData, err := json.Marshal(t)
	if err != nil{
		fmt.Println("序列化错", err)
	}
	fmt.Println("序列化后", string(jsonData))
}

func JsonSlice() {
	// 定义一个map类型的切片
	sl := []map[string]interface{}{}
	//var sl []map[string]interface{}
	m1 := make(map[string]interface{})
	m1["name"] = "hua"
	m1["lan"] = "python"
	sl = append(sl, m1)
	m2 := make(map[string]interface{})
	m2["name"] = "ming"
	m2["lan"] = "go"
	sl = append(sl, m2)

	jsonData, _ := json.Marshal(sl)
	fmt.Println(string(jsonData))
}

// 序列化结构体在结构体中，使用tag标签


func main() {
	JsonMap()
	JsonSlice()
}